/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Clases;

import Controladores.UsuarioJpaController;
import com.l2fprod.common.swing.JLinkButton;
import com.l2fprod.common.swing.JTaskPaneGroup;
import escuela.conexion;
import interfaz.AsignacionNotaAlumno;
import interfaz.ControlNotas;
import interfaz.hPanel;
import java.awt.Color;
import java.awt.Font;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import javax.swing.JOptionPane;

/**
 *
 * @author hC4stillo
 * Esta clase se encarga de devolver la informacion necesaria para llenar los formularios principales
 */
public class hLlenarPrins {
/*
 * este procedimiento devuelve una lista de jlinkbutton con los cursos que corresponden a un grado
 */
    public ArrayList<JLinkButton> hListaCursos(String grado,JLinkButton lb)
    {
        ArrayList<JLinkButton> hRetorno = new ArrayList();
        EntityManagerFactory emf = conexion.ObtenerInstancia().ObtenerEMF();
        EntityManager em = emf.createEntityManager();
        Query q=em.createNativeQuery("SELECT c.nombre FROM curso c INNER JOIN catedraticocurso ca ON ca.idCurso = c.idCurso INNER JOIN GradoSeccionCiclo g ON g.idGradoSeccionCiclo = ca.idGradoSeccionCiclo INNER JOIN grado gr ON g.idGrado = gr.idGrado WHERE gr.nombre='"+grado+"'");
        List<Object> hList = q.getResultList();
        //JOptionPane.showMessageDialog(null, hList.size()+"<");
        for(int i =0;i<hList.size();i++)
        {
            JLinkButton jlb = lb;
            lb.setText(hList.get(i).toString());
            /*jlb.addActionListener( new java.awt.event.ActionListener ( ) {
                public void actionPerformed(java.awt.event.ActionEvent evt )
                {
                    hPanel hPane = new hPanel();

                }
                });*/
            hRetorno.add(jlb);
        }
        //hacer consulta a los cursos del grado y crea una lista de link button del grado
        return hRetorno;
    }
    /*
     * Este procedimiento devuelve la lista de jtaskpanegroup con la llista de los grados ya conteniendo los cursos que le corresponden
     */
    public ArrayList<JTaskPaneGroup> hListaGrados(List<Object> hGrados, JLinkButton lb )
    {
        ArrayList<JTaskPaneGroup> hRetorno = new ArrayList();
        for(int i=0;i<hGrados.size();i++)
        {
            JTaskPaneGroup hTemp = new JTaskPaneGroup();
            hTemp.setExpanded(false);
            //asignamos el nombre del grado actual
            hTemp.setTitle(hGrados.get(i).toString());
            //mandar el nombre del grado actual
            ArrayList<JLinkButton> hLista = this.hListaCursos(hGrados.get(i).toString(),lb);
            for(int j=0; j<hLista.size();j++)
            {
                hTemp.add(hLista.get(j));
            }
            hTemp.revalidate();
            hTemp.repaint();
            hRetorno.add(hTemp);
            hTemp = null;
        }
        return hRetorno;
    }
    /*
     * devuelve una lista de jtaskpanegroup para llenar el formulario de catedratico, necesita dos parametros la lista de los cursos y el id del catedratico para crear los hpanel
     */
    public ArrayList<JTaskPaneGroup> hListaCursosCat(List<Object> hCursos, final int hId)
    {
        ArrayList<JTaskPaneGroup> hRetorno = new ArrayList();
        for(int i=0; i<hCursos.size();i++)
        {
            JLinkButton hCrearNota=new JLinkButton("Crear Nota");
            hCrearNota.setForeground(Color.WHITE);
            Font f = new Font("Tahoma", Font.BOLD, 11);
            hCrearNota.setFont(f);
            hCrearNota.addActionListener( new java.awt.event.ActionListener ( ) {
                public void actionPerformed(java.awt.event.ActionEvent evt )
                {
                    ControlNotas hCN = new ControlNotas(null,true, (short) hId);
                    hCN.setLocationRelativeTo(null);
                    hCN.setVisible(true);
                }
                });

            JLinkButton hAsNota=new JLinkButton("Asignar Notas");
            hAsNota.setForeground(Color.WHITE);
            hAsNota.setFont(f);
            hAsNota.addActionListener( new java.awt.event.ActionListener ( ) {
                public void actionPerformed(java.awt.event.ActionEvent evt )
                {
                    AsignacionNotaAlumno hANA = new AsignacionNotaAlumno(null,true, (short) hId);
                    hANA.setLocationRelativeTo(null);
                    hANA.setVisible(true);
                }
                });
            JTaskPaneGroup hTemp = new JTaskPaneGroup();
            hTemp.setExpanded(false);
            hTemp.setTitle(hCursos.get(i).toString());
            hTemp.add(hCrearNota);
            hTemp.add(hAsNota);
            hTemp.revalidate();
            hTemp.repaint();
            hRetorno.add(hTemp);
            hTemp = null;
        }
        return hRetorno;
    }
}
